package com.jswdwsx.esign.cloud.request

import com.jswdwsx.esign.cloud.enums.IdTypeEnum
import com.jswdwsx.esign.cloud.enums.IdentityTypeEnum
import com.jswdwsx.esign.cloud.enums.OrgIdTypeEnum
import com.jswdwsx.esign.cloud.enums.SealEnum

data class SignReq(

    /**
     * 签署流程模板id
     * 预设模板 为某项业务所需的签署流程配置的集合，配置内容包含签署流程的各个环节的细节，主要包括以下内容：
     * 流程信息 对应E签宝创建flow的部分参数
     * 签署文档 有哪些文档需要被签署
     * 签署步骤 有哪些角色参与签署哪些文件，顺序是什么
     * 签章信息 签章的id（部分情况下）、位置、大小等
     */
    val templateId: String,

    /**
     * 业务系统用来标识自己的系统（不能和其他系统冲突）
     */
    val appId: String,

    /**
     * 同appId下，每次请求都需要不一样
     */
    val appSerialNumber: String,

    // 签约客户的签署执行人（实名认证可不填）
    val signerName: String? = null,
    val signerIdType: IdTypeEnum? = null,
    val signerIdNumber: String? = null,
    val signerMobile: String? = null,

    /**
     * 签订对象是机构还是个人
     */
    val identityType: IdentityTypeEnum = IdentityTypeEnum.PERSON,

    // 签署组织信息 签订对象是组织时需要
    val orgName: String?,
    val orgIdType: OrgIdTypeEnum?,
    val orgIdNumber: String?,

    /**
     * 文件填充参数 参数名,参数值
     */
    val fileFillParam: Map<String, String> = emptyMap(),

    /**
     * 指定签署印章
     */
    val seals: Map<SealEnum, String> = emptyMap(),

    /**
     * 回调url（esign回调业务系统）
     */
    val notifyUrl: String?,

    /**
     * 签署完成页面重定向的url(支付宝小程序签署无法重定向，此参数被忽略)
     */
    val redirectUrl: String?
)
